package com.sunqianhu.algorithm.sort.select.straight_selection_sort;

public class StraightSelectSort {
    public static void selectionSort(int[] arr) {
        int n = arr.length;
        for (int i = 0; i < n - 1; i++) {
            int minIdx = i; //设置最小元素的索引为当前索引
            //在未排序的元素中找最小元素的索引
            for (int j = i + 1; j < n; j++) {
                if (arr[j] < arr[minIdx]) {
                    minIdx = j;
                }
            }
            //最小元素选出来放到临时变量中
            int temp = arr[minIdx];
            //当前元素放到被选择的元素的位置，因为下一个for循环索引会加1
            //保证for循环后的元素是未排序的，前面的元素是已排序的
            arr[minIdx] = arr[i];
            //将选择到的元素放到已排序的元素的末尾，即当前for的索引位置
            arr[i] = temp;
        }
    }

    // 主函数测试
    public static void main(String[] args) {
        int[] arr = {64, 25, 12, 22, 11};

        System.out.println("原始数组:");
        printArray(arr);

        selectionSort(arr); // 调用选择排序方法

        System.out.println("排序后数组:");
        printArray(arr);
    }

    // 打印数组的方法
    private static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
        System.out.println();
    }
}
